#include <iostream>
#include <algorithm>
using namespace std;


struct edge{
	int s,t,len;
};

bool cmp(edge a,edge b){
	return a.len<b.len;
}

int find(int *f,int x){
	if(f[x] == x) return x;
	return f[x] = find(f,f[x]);
}

int main(){
	int n,m,edge_sum=0,ans=0;
	cin>>n>>m;
	int f[n];
	edge e[m];
	for(int i=0;i<n;i++)
		f[i] = i;
	for(int i=0;i<m;i++){
		cin>>e[i].s>>e[i].t>>e[i].len;
		e[i].s--;e[i].t--;
	}
	sort(e,e+m,cmp);
	for(int i=0;i<m;i++){
		if(edge_sum == n-1) break;
		int f1=find(f,e[i].s),f2=find(f,e[i].t);
		if(f1 != f2){
			edge_sum++;
			ans += e[i].len;
			f[f1] = f[f2];
		}
	}
	if(edge_sum == n-1)
		cout<<ans;
	else
		cout<<"orz";
	return 0;
}
